package com.example.controller;
import com.example.common.result.Result;
import com.example.entity.dto.EmployeeDto;
import com.example.entity.dto.ProjectDto;
import com.example.entity.dto.Sub_ProjectsDto;
import com.example.entity.vo.*;
import com.example.service.ProjectService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/Project")
@Api(tags = "项目相关接口")
@Slf4j
public class ProjectController {
    @Autowired
    private ProjectService projectService;
    /**
     * 新增大项目
     * @param projectDto
     */
    @PostMapping("/Add")
    @ApiOperation("新增大项目")
    public Result AddProject(@RequestBody ProjectDto projectDto){
        //创建日志对象
        log.info("新建项目信息：{}",projectDto);
        projectService.AddProject(projectDto);
        return Result.success(projectDto);
    }
    /**
     * 通过Id获取大项目
     * @param Id
     */
    @PostMapping("/getId")
    @ApiOperation("通过Id获取大项目")
    public Result<List<getProjectsVo>> getProject(@RequestParam Integer Id){
        //创建日志对象
        log.info("新建项目信息：{}",Id);
        List<getProjectsVo> list =projectService.getProjectbyId(Id);
        return Result.success(list);
    }

    /**
     * 获取全部大项目
     */
    @PostMapping("/get")
    @ApiOperation("获取大项目")
    public Result<List<getProjectsVo>> getProject(){
        //创建日志对象
        log.info("新建项目信息");
        List<getProjectsVo> list =  projectService.getProject();
        return Result.success(list);
    }

    @PostMapping("/Add_sub")
    @ApiOperation("新增分项目")
    public Result AddProject(@RequestBody Sub_ProjectsDto sub_projectDto){
        //创建日志对象
        log.info("新建项目信息：{}",sub_projectDto);
        projectService.Add_subProject(sub_projectDto);
        return Result.success(sub_projectDto);
    }
    @PostMapping("/Get_sub")
    @ApiOperation("获取分项目")
    public Result<List<getSub_ProjectsVo>> Get_subProject(@RequestParam int id){
        //创建日志对象
        log.info("新建项目信息:{}",id);
        List<getSub_ProjectsVo> list = projectService.Get_subProject(id);
        return Result.success(list);

    }
    /**
     * 通过Id获取分项目
     * @param Id
     */
    @PostMapping("/getsubId")
    @ApiOperation("通过Id获取分项目")
    public Result<List<getSub_ProjectsVo>> get_subProjectbyId(@RequestParam Integer Id){
        //创建日志对象
        log.info("通过Id获取分项目：{}",Id);
        List<getSub_ProjectsVo> list =projectService.get_subProjectbyId(Id);
        return Result.success(list);
    }

    @PostMapping("/Delete")
    @ApiOperation("删除大项目")
    public Result deleteProject(@RequestParam Integer Id){
        //创建日志对象
        log.info("删除大项目信息：{}",Id);
        projectService.DeleteProject(Id);
        return Result.success(Id);
    }
    @PostMapping("/Delete_sub")
    @ApiOperation("删除分项目")
    public Result Delete_subProject(@RequestParam Integer Id){
        //创建日志对象
        log.info("删除子项目信息：{}",Id);
        projectService.Delete_subProject(Id);
        return Result.success(Id);
    }

    /**
     * 汇总分项目时间
     * @param id
     * @param date
     * @return
     */
    @PostMapping("/collect_sub")
    @ApiOperation("汇总分项目")
    //传分项目的名字
    public Result<Sub_ProjectsVo> collect_sub(@RequestParam int id,@RequestParam String date){
        //创建日志对象
        log.info("汇总分项目信息：小项目id：{}，日期：{}",id,date);
        Sub_ProjectsVo projectsVo = projectService.collect_sub(id,date);
        return Result.success(projectsVo);
    }

    /**
     *
     * @param id
     * @param date
     * @return
     */
    @GetMapping("/subDetail")
    @ApiOperation("获取分项目详情")
    //传分项目的名字
    public Result<List<SubProjectsVo>> getSubDetail(@RequestParam int id, @RequestParam String date){
        //创建日志对象
        log.info("获取分项目详情：小项目id：{}，时间:{}",id,date);
        List<SubProjectsVo> subDetail = projectService.getSubDetail(id,date);
        return Result.success(subDetail);
    }

    /**
     * 获取所有分项目
     * @return
     */
    @GetMapping("/getAllSub")
    @ApiOperation("获取所有分项目")
    //传分项目的名字
    public Result<List<Sub_ProjectsDto>> getSub(){
        //创建日志对象
        log.info("获取所有分项目");
        List<Sub_ProjectsDto> subProjectsDtoList = projectService.getSub();
        return Result.success(subProjectsDtoList);
    }
    /**
     * 汇总大项目时长
     * @param Id
     * @param time
     * @return
     */
    @PostMapping("/collect")
    @ApiOperation("汇总大项目")
    //传大项目的id 和 月份 传年月
    public Result<ProjectsVo> collect(@RequestParam Integer Id,@RequestParam String time){
        //创建日志对象
        log.info("汇总大项目时长：{}，{}",Id,time);
        ProjectsVo projectsVo =projectService.collect(Id,time);
        return Result.success(projectsVo);
    }

    @PostMapping("/update")
    @ApiOperation("修改大项目信息")
    public Result updateProject(@RequestBody ProjectDto projectDto){
        //创建日志对象
        log.info("修改信息{}",projectDto);
        projectService.updateProject(projectDto);
        return Result.success();
    }
    @PostMapping("/update_sub")
    @ApiOperation("修改分项目信息")
    public Result updatesubProject(@RequestBody Sub_ProjectsDto sub_ProjectsDto){
        //创建日志对象
        log.info("修改信息{}",sub_ProjectsDto);
        projectService.updatesubProject(sub_ProjectsDto);
        return Result.success();
    }
}
